今天的實作要做一個常見的特效,就是讓頁面上的文字陰影隨著滑鼠移動而跟著改變位置。而這次頁面上的文字是可編輯的,只要點選中間的文字即可進入編輯狀態,實作範例如下:
const hero = document.querySelector('.hero');
function shadow(e) {
const { offsetWidth: width, offsetHeight: height } = hero;
let { offsetX: x, offsetY: y } = e;
...
...
}
上面的意思是將hero這個元素的屬性offsetWidth、offsetHeight指定給自訂的變數width和height。然後把mousemove事件e的屬性offsetX、offsetY指定給自訂變數x和y。if (this !== e.target) {
x = x + e.target.offsetLeft;
y = y + e.target.offsetTop;
}
this是hero.addEventListener('mousemove', shadow)
shadow()的this,所以永遠為hero。而e.target則根據滑鼠位置可能是hero或是h1元素。所以當this不等於e.target時,就代表滑鼠移動到別的元素中,需要修正坐標。